package com.cute.leetcode.editor.cn.my;

import java.util.*;

/**
 *  两个大字符串相加
 *
 *  12345678
 *      5555
 * ---------
 *
 *  12345678
 *  00005555
 * ---------
 */
public class BigStringNumAdd {

    public static void main(String[] args) {
        String strNum1="92345678";

        String strNum2="7895555";

        String resultNum=stringNumAdd(strNum1,strNum2);
    }

    private static String stringNumAdd(String strNum1, String strNum2) {

       // 思路： 两个字符串先比较长度, 短的字符串前面补齐0;
        int length1=strNum1.length();
        int length2=strNum2.length();
        StringBuffer sb1=new StringBuffer(strNum1);
        StringBuffer sb2=new StringBuffer(strNum2);
        if(length1>=length2){
            // 字符串2 左边要补齐的0 的个数
            int znum2 = length1 - length2;
            for(int i=znum2;znum2>0;znum2--){
                sb2.insert(0,'0');
            }
        }else{
            // 字符串1 左边要补齐的0 的个数
            int znum1=length2-length1;
            for(int i=znum1;znum1>0;znum1--){
                sb2.insert(0,'0');
            }
        }
        strNum1=sb1.toString();
        strNum2=sb2.toString();
        int[] tempArray=new int[length1];
        int temp=0;
        String resultStr="";
        for (int i=length1-1;i>=0;i--){
            char c1 = strNum1.charAt(i);
            char c2 = strNum2.charAt(i);
            int n1=Integer.valueOf(c1+"");
            int n2=Integer.valueOf(c2+"");

            if((n1+n2+temp)>=10){
                int num=(n1+n2+temp)-10;
                temp=1;
                resultStr=num+resultStr;
            }else{
                int num=n1+n2+temp;
                temp=0;
                resultStr=num+resultStr;
            }
        }
        if(temp==1){
            resultStr=temp+resultStr;
        }
        System.out.println(sb1);
        System.out.println(sb2);
        System.err.println(resultStr);
        return resultStr;
    }
}
